/**
 * WebSocket服务工具
 * 用于管理WebSocket连接和事件
 */

let io;

/**
 * 初始化WebSocket服务
 * @param {Object} socketIo - Socket.IO实例
 */
export const initSocketService = (socketIo) => {
  io = socketIo;
  console.log('WebSocket服务已初始化');
};

/**
 * 发送学生状态更新事件
 * @param {Object} data - 包含学生ID、状态和其他相关信息的对象
 */
export const emitStudentStatusUpdate = (data) => {
  if (!io) {
    console.error('WebSocket服务未初始化');
    return;
  }
  
  // 广播给所有已认证用户
  io.to('authenticated').emit('student-status-updated', data);
  
  // 如果有班级ID，也发送到特定班级房间
  if (data.classId) {
    io.to(`class-${data.classId}`).emit('student-status-updated', data);
  }
};

/**
 * 发送考勤记录更新事件
 * @param {Object} data - 包含考勤记录信息的对象
 */
export const emitAttendanceUpdate = (data) => {
  if (!io) {
    console.error('WebSocket服务未初始化');
    return;
  }
  
  io.to('authenticated').emit('attendance-updated', data);
};

/**
 * 发送课后托班状态更新事件
 * @param {Object} data - 包含课后托班状态信息的对象
 */
export const emitAfterSchoolUpdate = (data) => {
  if (!io) {
    console.error('WebSocket服务未初始化');
    return;
  }
  
  io.to('authenticated').emit('after-school-updated', data);
  
  // 如果有课后托班ID，也发送到特定托班房间
  if (data.afterSchoolClassId) {
    io.to(`after-school-${data.afterSchoolClassId}`).emit('after-school-updated', data);
  }
};

/**
 * 获取当前连接的Socket.IO实例
 * @returns {Object} Socket.IO实例
 */
export const getIO = () => {
  return io;
};